R0=%0
R1=%1
R2=%2
R3=%3
R4=%4
R5=%5
SP=%6
PC=%7
SW=177570
STATUS=177776

TTY=1
KBD=0

.RESET=2
.RESTART=3
.READ=11
.WAIT=4
.WRITE=12

.=2000
START:	MOV	#2000,SP
	IOT
	.WORD	0
	.BYTE	.RESET,0
	IOT
	.WORD	START
	.BYTE	.RESTART,0
GO:	IOT
	.WORD	ENTMSG
	.BYTE	.WRITE,TTY
	IOT
	.WORD	INBF1
	.BYTE	.READ,KBD
	IOT
	.WORD	.-2
	.BYTE	.WAIT,KBD
	MOV	#A,R0
	MOV	#BUF1,R1
	ATOF+FAM
	BVC	NOVA
	IOT
	.WORD	VBITA
	.BYTE	.WRITE,TTY
	BR	GO
NOVA:	CMPB	#54,(R1)+
	BNE	.-4
	ATOF
	MOV	@R1,B
	BVC	NOVB
	IOT
	.WORD	VBITB
	.BYTE	.WRITE,TTY
	BR	GO
NOVB:	BIT	#1,SW
	BEQ	S.000
	MOV	#BUF3,R0
	MOV	#A,R1
	OTOA+FAM
	ADD	#7,R0
	MOV	#A+2,R1
	OTOA+FAM
	ADD	#7,R0
	MOV	#A+4,R1
	OTOA+FAM
	IOT
	.WORD	OUTBF2
	.BYTE	.WRITE,TTY
S.000:	BIT	#2,SW
	BEQ	S.001
	MOV	#BUF6,R0
	MOV	#B,R1
	OTOA+FAM
	ADD	#7,R0
	MOV	#B+2,R1
	OTOA+FAM
	ADD	#7,R0
	MOV	#B+4,R1
	OTOA+FAM
	IOT
	.WORD	OUTBF3
	.BYTE	.WRITE,TTY
S.001:	BIT	#4,SW
	BEQ	S.002
	IOT
	.WORD	MSG1
	.BYTE	.WRITE,TTY
	JSR	PC,MOVE
	ADDF
	MOV	B,C
	BVC	NOVAD
	IOT
	.WORD	VBITAD
	.BYTE	.WRITE,TTY
	BR	VAD
NOVAD:	JSR	PC,OUT
VAD:	BIT	#10,SW
S.002=VAD
	BEQ	S.003
	IOT
	.WORD	MSG2
	.BYTE	.WRITE,TTY
	JSR	PC,MOVE
	MOV	#B,R1
	MOV	#C,R0
	SUBF
	MOV	@R1,@R0
	BVC	NOVS
	IOT
	.WORD	VBITS
	.BYTE	.WRITE,TTY
	BR	VS
NOVS:	JSR	PC,OUT
VS:	BIT	#20,SW
S.003=VS
	BEQ	S.004
	IOT
	.WORD	MSG3
	.BYTE	.WRITE,TTY
	JSR	PC,MOVE
	MULF
	MOV	@#B,@(PC)+
	.WORD	C
	BVC	NOVM
	IOT
	.WORD	VBITM
	.BYTE	.WRITE,TTY
	BR	VM
NOVM:	JSR	PC,OUT
VM:	BIT	#40,SW
S.004=VM
	BEQ	S.005
	IOT
	.WORD	MSG4
	.BYTE	.WRITE,TTY
	JSR	PC,MOVE
	MOV	#B,R0
	DIVF+PM
	BVC	NOVD
	IOT
	.WORD	VBITD
	.BYTE	.WRITE,TTY
	BR	VD
NOVD:	JSR	PC,OUT
VD:	BIT	#100,SW
S.005=VD
	BEQ	S.006
	IOT
	.WORD	MSG5
	.BYTE	.WRITE,TTY
	SIN
	MOV	A,C
	JSR	PC,OUT
S.006:	BIT	#200,SW
	BEQ	S.007
	IOT
	.WORD	MSG6
	.BYTE	.WRITE,TTY
	COS
	MOV	@#A,@#C
	JSR	PC,OUT
S.007:	BIT	#400,SW
	BEQ	S.008
	IOT
	.WORD	MSG7
	.BYTE	.WRITE,TTY
	ATAN
	MOV	A,@#C
	JSR	PC,OUT
S.008:	BIT	#1000,SW
	BEQ	S.009
	IOT
	.WORD	MSG8
	.BYTE	.WRITE,TTY
	EXP
	MOV	A,@#C
	BVC	NOVX
	IOT
	.WORD	VBITX
	.BYTE	.WRITE,TTY
	BR	VX
NOVX:	JSR	PC,OUT
VX:	BIT	#2000,SW
S.009=VX
	BEQ	S.010
	IOT
	.WORD	MSG9
	.BYTE	.WRITE,TTY
	LOG
	MOV	A,C
	BVC	NOVL
	IOT
	.WORD	VBITL
	.BYTE	.WRITE,TTY
	BR	VL
NOVL:	JSR	PC,OUT
VL:	BIT	#4000,SW
S.010=VL
	BEQ	S.011
	IOT
	.WORD	MSG0
	.BYTE	.WRITE,TTY
	SQRT
	MOV	A,C
	BVC	NOVQ
	IOT
	.WORD	VBITQ
	.BYTE	.WRITE,TTY
	BR	VQ
NOVQ:	JSR	PC,OUT
VQ:	BIT	#10000,SW
S.011=VQ
	BEQ	S.012
	CMPF
	BGT	S.GT
	BLT	S.LT
	IOT
	.WORD	MSGA
	.BYTE	.WRITE,TTY
	BR	NOVC
S.GT:	IOT
	.WORD	MSGB
	.BYTE	.WRITE,TTY
	BR	NOVC
S.LT:	IOT
	.WORD	MSGC
	.BYTE	.WRITE,TTY
NOVC:
S.012:	JMP	GO
	JMP	GO
MOVE:	MOV	A,C
	MOV	A+2,C+2
	MOV	A+4,C+4
	RTS	PC
OUT:	MOV	#20,R0
	MOV	#BUF2,R1
	MOVB	#040,(R1)+
	DEC	R0
	BGT	.-6
	MOV	#C,R1
	MOV	#BUF2,R0
	FTOA+FAM
	BVC	OUT1
	ETOA
	MOV	C,BUF2
OUT1:	IOT
	.WORD	OUTBF1
	.BYTE	.WRITE,TTY
	RTS	PC
MSG1:	.WORD	4,0,4
	.ASCII	/A+B=/
MSG2:	.WORD	4,0,4
	.ASCII	/A-B=/
MSG3:	.WORD	4,0,4
	.ASCII	/A*B=/
MSG4:	.WORD	4,0,4
	.ASCII	#A/B=#
MSG5:	.WORD	10,0,10
	.ASCII	/SIN(A) =/
MSG6:	.WORD	10,0,10
	.ASCII	/COS(A) =/
MSG7:	.WORD	10,0,10
	.ASCII	/ATAN(A)=/
MSG8:	.WORD	10,0,10
	.ASCII	/EXP(A) =/
MSG9:	.WORD	10,0,10
	.ASCII	/LOG(A) =/
MSG0:	.WORD	10,0,10
	.ASCII	/SQRT(A)=/
	.EVEN
MSGA:	6,0,6
	.ASCII	/A=B/
	.BYTE	15,12,0
MSGB:	.WORD	6,0,6
	.ASCII	/A>B/
	.BYTE	15,12,0
MSGC:	.WORD	6,0,6
	.ASCII	/A<B/
	.BYTE	15,12,0
INBF1:	.WORD	50,0,50
BUF1=.
	.=.+50
OUTBF1:	.WORD	18.,0,18.
BUF2:	.ASCII	/                /
	.BYTE	15,12
ENTMSG:	.WORD	27,0,27
	.BYTE	15,12,12,12
	.ASCII	/ENTER TWO NUMBERS/
	.BYTE	15,12
	.EVEN
VBITA:	.WORD	17,0,17
	.ASCII	/V BIT INPUT A/
	.BYTE	15,12
	.EVEN
VBITB:	.WORD	17,0,17
	.ASCII	/V BIT INPUT B/
	.BYTE	15,12
	.EVEN
VBITD:	.WORD	23,0,23
	.ASCII	/V BIT ON DIVISION/
	.BYTE	15,12
	.EVEN
VBITAD:	.WORD	23,0,23
	.ASCII	/V BIT ON ADDITION/
	.BYTE	15,12
	.EVEN
VBITS:	.WORD	26,0,26
	.ASCII	/V BIT ON SUBTRACTION/
	.BYTE	15,12
VBITM:	.WORD	31,0,31
	.ASCII	/V BIT ON MULTIPLICATION/
	.BYTE	15,12
	.EVEN
VBITX:	.WORD	20,0,20
	.ASCII	/ V BIT ON EXP /
	.BYTE	15,12
VBITL:	.WORD	20,0,20
	.ASCII	/ V BIT ON LOG /
	.BYTE	15,12
VBITQ:	.WORD	20,0,20
	.ASCII	/ V BIT ON SQRT/
	.BYTE	15,12
OUTBF2:	.WORD	39.,0,39.
	.ASCII	/OCTAL FORM OF A /
BUF3:	.ASCII	/       /
BUF4:	.ASCII	/       /
BUF5:	.ASCII	/       /
	.BYTE	15,12
	.EVEN
OUTBF3:	.WORD	40.,0,40.
	.ASCII	/OCTAL FORM OF B /
BUF6:	.ASCII	/       /
BUF7:	.ASCII	/       /
BUF8:	.ASCII	/       /
	.BYTE	15,12,12
	.EVEN
A:	.WORD	0,0,0
B:	.WORD	00,0,0
C:	.WORD	0,0,0


;	SET UP THE EMT TRAP VECTOR TO THE LEXT LOCATION
;	WHERE THE FPP WILL BE LOADED VIA THE LOAD AFTER THE 
;	LAST LOADED PROGRAM

LAST=.
	.=30
	.WORD	EMTEND
	.WORD	340

	.=LAST
	.WORD	0
EMTEND:	.END

                                                                                                                                                         